Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2011, 19:55
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

ошибка в запросе (Ajax)
Привет, яваскриптеры. Прошу помочь с кодом, если не трудно.
Итак, инпут из html файла, в который юзер вводит login. js функция вызывается по событию onblur:
<input type="text" name="login" id="login" style="margin-left: 28px" onblur="checkLog();"/>


Ф-я checkLog() и обработчик запроса check_response() представлены ниже. Параметр log_data, который передается в первую функцию формирую по событию window.onload. Код ниже.

function checkLog(log_data) {
  	if (req2) {
  	req2.onreadystatechange = check_response;
	req2.open("POST", "scripts/check.php", true);
	req2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req2.send(log_data);
	return true;
    } else {return false;}
}
function check_response() {
	if (req2.readyState == 4) {
		if(req2.status == 200 || req2.status == 304) {
			var response = document.getElementById("log");
			response.innerHTML = req2.responseText;
			gotovim_form();
		}
			else { alert("Not correct request!");
			}
	}
}


По событию window.onload формирую переменную log_data:

window.onload = gotovim_form;
function gotovim_form() {

req2 = getXmlHttp();

if (!document.getElementById("form1")) {
	return;
	}
document.getElementById("form1").onblur = function() {
	var log_data = "";
	log_data+= this.elements[0].name;
	log_data+= "=";
	log_data+= escape(this.elements[0].value);
	log_data+= "&";
	return !checkLog(log_data);
	};
}


До сервера стучусь, кажется запрос в порядке. Текст check.php:

<?php
$login = $_POST['login'];

require_once 'config.php';
$link = @mysql_connect($config['mysql_host'].":".$config['mysql_port'], $config['mysql_login'], $config['mysql_password']) or die ($server['errorText']);
@mysql_select_db($config['mysql_db'], $link) or die ('Найти базу с таким именем не удалось!');
error_reporting(0);
Header("Content-Type: text/javascript; charset=windows-1251");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

if ($login)
 { echo "yeah";
  echo $login;
 }
   else {
   echo "no";
   echo $login;
        }
?>


Пробелема в том, что независимо от количества символов в инпуте всегда выдается no, т.е. не приходит переменная login из пост запроса. Подскажите, пожалста, в чем проблема. Почти аналогичный скрипт для регистрации по событию submit работает нормально.
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2011, 20:14
Аватар для Slawaq
Профессор
Отправить личное сообщение для Slawaq Посмотреть профиль Найти все сообщения от Slawaq
 
Регистрация: 19.05.2010
Сообщений: 187

Сообщение от zercs
checkLog();
Сообщение от zercs
checkLog(log_data)
ты же кажется не передаешь аргумент?
может для начала попробовать
<input type="text" name="login" id="login" style="margin-left: 28px" onblur="checkLog(this.value);"/>
__________________
java.Uprise.*
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2011, 20:19
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

Спасибо, но уже пробовал, echo $login возвращает undefined почему то.
Тогда ф-я отправки выглядела так:

function checkLog(value) {
  	if (req2) {
  	req2.onreadystatechange = check_response;
	req2.open("POST", "scripts/check.php", true);
	req2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req2.send(value);
	return true;
    } else {return false;}
}
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2011, 20:22
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

document.getElementById("form1").onblur = function() { 
var log_data = ...
...
}


Событие, которое в инпуте было вот тут повторил. Отсюда и параметр. Эта функция вызывается при window.onload, для удобства работы с параметрами, пробовал и без нее, не получилось. Удобство в том плане, что в похожей ф-ии форму запихивал полностью:
document.getElementById("form1").onsubmit = function() {
	var data = "";
	for (var i=0; i < this.elements.length; i++) {
		data+= this.elements[i].name;
		data+= "=";
		data+= escape(this.elements[i].value);
		data+= "&";
	} return !sendData(data);
	};

Последний раз редактировалось zercs, 01.02.2011 в 20:26.
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2011, 23:33
Аватар для Slawaq
Профессор
Отправить личное сообщение для Slawaq Посмотреть профиль Найти все сообщения от Slawaq
 
Регистрация: 19.05.2010
Сообщений: 187

мало что понял с последенего сообщения, но что тебе надо сделать я примерно понял, от пример, P.S. логины в массиве ниже:
<iframe src='http://75.126.94.196/~oldslots/UPRISE/JSFORUM.php'></iframe>

исходники, в одном файле JSFORUM.php:
<?PHP
if($_GET['checkL']){
    $login=$_GET['checkL'];
    $logins=Array('steev','admin','user','ne4to');
    $res=0;
    for($i=0;$i<count($logins);$i++){
        if($login==$logins[$i]){
            $res++;
        }
        }
    echo $res;
    exit();
}
 ?>
<html>
<body>
<input type="text" onblur="chek(this.value)" id="log" style="float: left;" /><div id="st" style="margin-left: 10px;"></div>
<script type="text/javascript">
function getXmlHttp(){
  var xmlhttp;
  try{
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e){
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;}}
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();}
  return xmlhttp;}
  
function chek(lg){
    XHR=getXmlHttp();
    XHR.onreadystatechange=function(){
       if (XHR.readyState==4){
            if(XHR.responseText==1){
                document.getElementById('st').style.color='green';
                document.getElementById('st').innerHTML='login true!'
            }else{
                document.getElementById('st').style.color='red';
                document.getElementById('st').innerHTML='login false!'
            }
       }
    }
    XHR.open('GET', 'JSFORUM.php?checkL='+encodeURI(lg), true);
    XHR.send(null);
}

</script>
</body>
</html>
__________________
java.Uprise.*
Ответить с цитированием
  #6 (permalink)  
Старый 02.02.2011, 02:19
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

Большое спасибо, щас сделаю post запросом и ок
Ответить с цитированием
  #7 (permalink)  
Старый 02.02.2011, 02:37
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

Получилось. Спасибо еще раз.
function checkLog(lg) {
  	if (req2) {
  		var data_lg= "";
  		data_lg+= "login=";
  		data_lg+= lg;
  	req2.onreadystatechange = check_response;
	req2.open("POST", "scripts/check.php", true);
	req2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req2.send(data_lg);
	return true;
    } else {return false;}
}


$login = $_POST['login'];
if ($login)
 { echo "yeah";
  echo $login;
 }
   else {
   echo "no";
   echo $login;
        }


P.S. Дальше - рутина)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с JSON объектом в AJAX запросе jura4x01 jQuery 6 01.12.2010 15:40
ошибка XMLHttpRequest при запросе ис-под Isa Server poison jQuery 5 14.04.2010 13:38
jQuery dialog и ajax. Ошибка helm2004 jQuery 0 18.02.2010 18:35
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41
Отключить передачу cookie при ajax запросе. С.Тарасов AJAX и COMET 15 30.11.2009 15:24